"""
可自动回收的UI层。
"""
from abc import ABC

from .abstract import Layer
from ..base import BaseSessionParentType


class AutoRecycleLayer(Layer[BaseSessionParentType], ABC):
    """
    自动回收的UI层，当用户按下返回键，UI层会自动从activity栈中弹出。
    """
    async def on_back_pressed(self) -> bool:
        """
        销毁当前layer并返回上一层。
        """
        if not hasattr(self.parent, 'pop_layer'):
            return True
        await getattr(self.parent, 'pop_layer')()
        await self.destroy()
        return False
